import { IPSDataEntity } from '../dataentity/ipsdata-entity';
import { IPSDEField } from '../dataentity/defield/ipsdefield';
import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';
import { IPSSystemModule } from '../system/ipssystem-module';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSSysMsgQueue
 */
export interface IPSSysMsgQueue extends IPSModelObject {
  /**
   * 消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  getContentPSDEField(): IPSDEField | null;

  /**
   * 消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  get contentPSDEField(): IPSDEField | null;

  /**
   * 消息内容值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getContentPSDEFieldMust(): IPSDEField;

  /**
   * 钉钉消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  getDDContentPSDEField(): IPSDEField | null;

  /**
   * 钉钉消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  get dDContentPSDEField(): IPSDEField | null;

  /**
   * 钉钉消息内容值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getDDContentPSDEFieldMust(): IPSDEField;

  /**
   * 文件值存储属性
   *
   * @type {IPSDEField}
   */
  getFilePSDEField(): IPSDEField | null;

  /**
   * 文件值存储属性
   *
   * @type {IPSDEField}
   */
  get filePSDEField(): IPSDEField | null;

  /**
   * 文件值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getFilePSDEFieldMust(): IPSDEField;

  /**
   * 即时消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  getIMContentPSDEField(): IPSDEField | null;

  /**
   * 即时消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  get iMContentPSDEField(): IPSDEField | null;

  /**
   * 即时消息内容值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getIMContentPSDEFieldMust(): IPSDEField;

  /**
   * 移动端任务操作路径值存储属性
   *
   * @type {IPSDEField}
   */
  getMobTaskUrlPSDEField(): IPSDEField | null;

  /**
   * 移动端任务操作路径值存储属性
   *
   * @type {IPSDEField}
   */
  get mobTaskUrlPSDEField(): IPSDEField | null;

  /**
   * 移动端任务操作路径值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getMobTaskUrlPSDEFieldMust(): IPSDEField;

  /**
   * 消息队列标记
   * @type {string}
   */
  msgQueueTag: string;

  /**
   * 消息队列标记2
   * @type {string}
   */
  msgQueueTag2: string;

  /**
   * 消息队列类型
   * @description 值模式 [系统消息队列类型] {RUNTIME：Runtime、 DE：实体、 USER：用户自定义、 USER2：用户自定义2 }
   * @type {( string | 'RUNTIME' | 'DE' | 'USER' | 'USER2')}
   */
  msgQueueType: string | 'RUNTIME' | 'DE' | 'USER' | 'USER2';

  /**
   * 消息类型值存储属性
   *
   * @type {IPSDEField}
   */
  getMsgTypePSDEField(): IPSDEField | null;

  /**
   * 消息类型值存储属性
   *
   * @type {IPSDEField}
   */
  get msgTypePSDEField(): IPSDEField | null;

  /**
   * 消息类型值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getMsgTypePSDEFieldMust(): IPSDEField;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  get psDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntityMust(): IPSDataEntity;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;

  /**
   * 短消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  getSMSContentPSDEField(): IPSDEField | null;

  /**
   * 短消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  get sMSContentPSDEField(): IPSDEField | null;

  /**
   * 短消息内容值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getSMSContentPSDEFieldMust(): IPSDEField;

  /**
   * 消息发送时间值存储属性
   *
   * @type {IPSDEField}
   */
  getSendTimePSDEField(): IPSDEField | null;

  /**
   * 消息发送时间值存储属性
   *
   * @type {IPSDEField}
   */
  get sendTimePSDEField(): IPSDEField | null;

  /**
   * 消息发送时间值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getSendTimePSDEFieldMust(): IPSDEField;

  /**
   * 消息状态值存储属性
   *
   * @type {IPSDEField}
   */
  getStatePSDEField(): IPSDEField | null;

  /**
   * 消息状态值存储属性
   *
   * @type {IPSDEField}
   */
  get statePSDEField(): IPSDEField | null;

  /**
   * 消息状态值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getStatePSDEFieldMust(): IPSDEField;

  /**
   * 消息标记2值存储属性
   *
   * @type {IPSDEField}
   */
  getTag2PSDEField(): IPSDEField | null;

  /**
   * 消息标记2值存储属性
   *
   * @type {IPSDEField}
   */
  get tag2PSDEField(): IPSDEField | null;

  /**
   * 消息标记2值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTag2PSDEFieldMust(): IPSDEField;

  /**
   * 消息标记值存储属性
   *
   * @type {IPSDEField}
   */
  getTagPSDEField(): IPSDEField | null;

  /**
   * 消息标记值存储属性
   *
   * @type {IPSDEField}
   */
  get tagPSDEField(): IPSDEField | null;

  /**
   * 消息标记值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTagPSDEFieldMust(): IPSDEField;

  /**
   * 目标标识值存储属性
   *
   * @type {IPSDEField}
   */
  getTargetPSDEField(): IPSDEField | null;

  /**
   * 目标标识值存储属性
   *
   * @type {IPSDEField}
   */
  get targetPSDEField(): IPSDEField | null;

  /**
   * 目标标识值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTargetPSDEFieldMust(): IPSDEField;

  /**
   * 目标类型值存储属性
   *
   * @type {IPSDEField}
   */
  getTargetTypePSDEField(): IPSDEField | null;

  /**
   * 目标类型值存储属性
   *
   * @type {IPSDEField}
   */
  get targetTypePSDEField(): IPSDEField | null;

  /**
   * 目标类型值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTargetTypePSDEFieldMust(): IPSDEField;

  /**
   * 任务操作路径值存储属性
   *
   * @type {IPSDEField}
   */
  getTaskUrlPSDEField(): IPSDEField | null;

  /**
   * 任务操作路径值存储属性
   *
   * @type {IPSDEField}
   */
  get taskUrlPSDEField(): IPSDEField | null;

  /**
   * 任务操作路径值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTaskUrlPSDEFieldMust(): IPSDEField;

  /**
   * 消息标题值存储属性
   *
   * @type {IPSDEField}
   */
  getTitlePSDEField(): IPSDEField | null;

  /**
   * 消息标题值存储属性
   *
   * @type {IPSDEField}
   */
  get titlePSDEField(): IPSDEField | null;

  /**
   * 消息标题值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTitlePSDEFieldMust(): IPSDEField;

  /**
   * 微信消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  getWXContentPSDEField(): IPSDEField | null;

  /**
   * 微信消息内容值存储属性
   *
   * @type {IPSDEField}
   */
  get wXContentPSDEField(): IPSDEField | null;

  /**
   * 微信消息内容值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getWXContentPSDEFieldMust(): IPSDEField;
}
